package com.mtw.bbs.common.core.constant;


import java.util.Arrays;
import java.util.List;

/**
 * 权限相关常量定义
 *
 */
public interface AuthConstant {

    /**
     * 认证请求头key
     */
    String AUTHORIZATION_KEY = "Authorization";

    /**
     * token刷新请求头key
     */
    String REFRESH_TOKEN_HEADER = "RefreshToken";

    /**
     * 服务间认证请求头key
     */
    String SERVICE_AUTH_KEY = "SerAuth";

    /**
     * 认证用户信息请求头key
     */
    String AUTH_USER_KEY = "Auth-User";


    /**
     * 已认证类型
     */
    enum AuthedType{
        // 认证成功
        SUCCESS("success"),
        // 认证失败
        FAIL("fail"),
        // 忽略
        IGNORE("ignore");



        private final String name;

        AuthedType(String name){
            this.name = name;
        }

        public String getName(){
            return this.name;
        }
    }




    /**
     * Redis缓存认证用户前缀
     */
    String REDIS_AUTH_PREFIX = "auth:";

    /**
     * Redis缓存access token-用户前缀
     */
    String REDIS_ACCESS_PREFIX = "access:";


    /**
     * Redis缓存refresh token-用户前缀
     */
    String REDIS_REFRESH_PREFIX = "refresh:";




    /**
     * access token 前缀
     */
    String ACCESS_TOKEN_KEY = "access_token";

    /**
     * refresh token 前缀
     */
    String REFRESH_TOKEN_KEY = "refresh_token";


    /**
     * redis中验证码key前缀
     */
    String CAPTCHA_CODE_PREFIX = "CAPTCHA_CODE:";






    /**
     * 短信验证码key前缀
     */
    String SMS_CODE_PREFIX = "SMS_CODE:";


    /**
     * 客户端类型前缀
     */
    String PLATFORM_PREFIX = "platform";

    /**
     * 客户端 app
     */
    String PLATFORM_APP = "app";

    /**
     * 客户端 web
     */
    String PLATFORM_WEB = "web";

    /**
     * 客户端 web
     */
    String PLATFORM_ADMIN = "admin";


    /**
     * 线上环境禁止方法
     */
    List<String> PROD_FORBID_METHODS= Arrays.asList("PUT","DELETE");




    /**
     * token有效期12小时，单位毫秒
     */
    long EXPIRE_TIME_MS = 12 * 3600 * 1000;

    /**
     * token刷新时间7天，单位毫秒
     */
    long REFRESH_TIME_MS = 7 * 24 * 3600 * 1000;


    /**
     * token有效期12小时，单位秒
     */
    long EXPIRE_TIME_S = 12 * 3600;

    /**
     * token刷新时间7天，单位秒
     */
    long REFRESH_TIME_S = 7 * 24 * 3600;

}

